package com.taobao.api.request;

import java.util.Map;

import com.taobao.api.ApiRuleException;
import com.taobao.api.TaobaoRequest;
import com.taobao.api.internal.util.RequestCheckUtils;
import com.taobao.api.internal.util.TaobaoHashMap;
import com.taobao.api.response.LogisticsConsignOrderCreateandsendResponse;

/**
 * TOP API: taobao.logistics.consign.order.createandsend request
 * 
 * @author auto create
 * @since 1.0, 2013-08-03 16:51:00
 */
public class LogisticsConsignOrderCreateandsendRequest implements TaobaoRequest<LogisticsConsignOrderCreateandsendResponse> {

  private Map<String, String> headerMap = new TaobaoHashMap();
  private TaobaoHashMap       udfParams;                      // add
                                                              // user-defined
                                                              // text parameters
  private Long                timestamp;

  /**
   * 物流公司ID
   */
  private Long                companyId;

  /**
   * 物品的json数据。
   */
  private String              itemJsonString;

  /**
   * 物流订单物流类型LogisType LogisticsOrderConstant.LOGIS_TYPE_RECOMMENDED
   */
  private Long                logisType;

  /**
   * 运单号
   */
  private String              mailNo;

  /**
   * 订单来源，参考： LogisticsOrderConstant.ORDER_SOURCE_*
   */
  private Long                orderSource;

  /**
   * 订单类型，参考： LogisticsOrderConstant.ORDER_TYPE_
   */
  private Long                orderType;

  /**
   * 收件人街道地址
   */
  private String              rAddress;

  /**
   * 收件人区域ID
   */
  private Long                rAreaId;

  /**
   * 市
   */
  private String              rCityName;

  /**
   * 区
   */
  private String              rDistName;

  /**
   * 手机号码
   */
  private String              rMobilePhone;

  /**
   * 收件人名称
   */
  private String              rName;

  /**
   * 省
   */
  private String              rProvName;

  /**
   * 电话号码
   */
  private String              rTelephone;

  /**
   * 收件人邮编
   */
  private String              rZipCode;

  /**
   * 发件人街道地址
   */
  private String              sAddress;

  /**
   * 发件人区域ID
   */
  private Long                sAreaId;

  /**
   * 市
   */
  private String              sCityName;

  /**
   * 区
   */
  private String              sDistName;

  /**
   * 手机号码
   */
  private String              sMobilePhone;

  /**
   * 发件人名称
   */
  private String              sName;

  /**
   * 省
   */
  private String              sProvName;

  /**
   * 电话号码
   */
  private String              sTelephone;

  /**
   * 发件人出编
   */
  private String              sZipCode;

  /**
   * 费用承担方式 1买家承担运费 2卖家承担运费
   */
  private String              shipping;

  /**
   * 交易流水号
   */
  private Long                tradeId;

  /**
   * 用户ID
   */
  private Long                userId;

  public void setCompanyId(Long companyId) {
    this.companyId = companyId;
  }

  public Long getCompanyId() {
    return this.companyId;
  }

  public void setItemJsonString(String itemJsonString) {
    this.itemJsonString = itemJsonString;
  }

  public String getItemJsonString() {
    return this.itemJsonString;
  }

  public void setLogisType(Long logisType) {
    this.logisType = logisType;
  }

  public Long getLogisType() {
    return this.logisType;
  }

  public void setMailNo(String mailNo) {
    this.mailNo = mailNo;
  }

  public String getMailNo() {
    return this.mailNo;
  }

  public void setOrderSource(Long orderSource) {
    this.orderSource = orderSource;
  }

  public Long getOrderSource() {
    return this.orderSource;
  }

  public void setOrderType(Long orderType) {
    this.orderType = orderType;
  }

  public Long getOrderType() {
    return this.orderType;
  }

  public void setrAddress(String rAddress) {
    this.rAddress = rAddress;
  }

  public String getrAddress() {
    return this.rAddress;
  }

  public void setrAreaId(Long rAreaId) {
    this.rAreaId = rAreaId;
  }

  public Long getrAreaId() {
    return this.rAreaId;
  }

  public void setrCityName(String rCityName) {
    this.rCityName = rCityName;
  }

  public String getrCityName() {
    return this.rCityName;
  }

  public void setrDistName(String rDistName) {
    this.rDistName = rDistName;
  }

  public String getrDistName() {
    return this.rDistName;
  }

  public void setrMobilePhone(String rMobilePhone) {
    this.rMobilePhone = rMobilePhone;
  }

  public String getrMobilePhone() {
    return this.rMobilePhone;
  }

  public void setrName(String rName) {
    this.rName = rName;
  }

  public String getrName() {
    return this.rName;
  }

  public void setrProvName(String rProvName) {
    this.rProvName = rProvName;
  }

  public String getrProvName() {
    return this.rProvName;
  }

  public void setrTelephone(String rTelephone) {
    this.rTelephone = rTelephone;
  }

  public String getrTelephone() {
    return this.rTelephone;
  }

  public void setrZipCode(String rZipCode) {
    this.rZipCode = rZipCode;
  }

  public String getrZipCode() {
    return this.rZipCode;
  }

  public void setsAddress(String sAddress) {
    this.sAddress = sAddress;
  }

  public String getsAddress() {
    return this.sAddress;
  }

  public void setsAreaId(Long sAreaId) {
    this.sAreaId = sAreaId;
  }

  public Long getsAreaId() {
    return this.sAreaId;
  }

  public void setsCityName(String sCityName) {
    this.sCityName = sCityName;
  }

  public String getsCityName() {
    return this.sCityName;
  }

  public void setsDistName(String sDistName) {
    this.sDistName = sDistName;
  }

  public String getsDistName() {
    return this.sDistName;
  }

  public void setsMobilePhone(String sMobilePhone) {
    this.sMobilePhone = sMobilePhone;
  }

  public String getsMobilePhone() {
    return this.sMobilePhone;
  }

  public void setsName(String sName) {
    this.sName = sName;
  }

  public String getsName() {
    return this.sName;
  }

  public void setsProvName(String sProvName) {
    this.sProvName = sProvName;
  }

  public String getsProvName() {
    return this.sProvName;
  }

  public void setsTelephone(String sTelephone) {
    this.sTelephone = sTelephone;
  }

  public String getsTelephone() {
    return this.sTelephone;
  }

  public void setsZipCode(String sZipCode) {
    this.sZipCode = sZipCode;
  }

  public String getsZipCode() {
    return this.sZipCode;
  }

  public void setShipping(String shipping) {
    this.shipping = shipping;
  }

  public String getShipping() {
    return this.shipping;
  }

  public void setTradeId(Long tradeId) {
    this.tradeId = tradeId;
  }

  public Long getTradeId() {
    return this.tradeId;
  }

  public void setUserId(Long userId) {
    this.userId = userId;
  }

  public Long getUserId() {
    return this.userId;
  }

  public Long getTimestamp() {
    return this.timestamp;
  }

  public void setTimestamp(Long timestamp) {
    this.timestamp = timestamp;
  }

  public String getApiMethodName() {
    return "taobao.logistics.consign.order.createandsend";
  }

  public Map<String, String> getTextParams() {
    TaobaoHashMap txtParams = new TaobaoHashMap();
    txtParams.put("company_id", this.companyId);
    txtParams.put("item_json_string", this.itemJsonString);
    txtParams.put("logis_type", this.logisType);
    txtParams.put("mail_no", this.mailNo);
    txtParams.put("order_source", this.orderSource);
    txtParams.put("order_type", this.orderType);
    txtParams.put("r_address", this.rAddress);
    txtParams.put("r_area_id", this.rAreaId);
    txtParams.put("r_city_name", this.rCityName);
    txtParams.put("r_dist_name", this.rDistName);
    txtParams.put("r_mobile_phone", this.rMobilePhone);
    txtParams.put("r_name", this.rName);
    txtParams.put("r_prov_name", this.rProvName);
    txtParams.put("r_telephone", this.rTelephone);
    txtParams.put("r_zip_code", this.rZipCode);
    txtParams.put("s_address", this.sAddress);
    txtParams.put("s_area_id", this.sAreaId);
    txtParams.put("s_city_name", this.sCityName);
    txtParams.put("s_dist_name", this.sDistName);
    txtParams.put("s_mobile_phone", this.sMobilePhone);
    txtParams.put("s_name", this.sName);
    txtParams.put("s_prov_name", this.sProvName);
    txtParams.put("s_telephone", this.sTelephone);
    txtParams.put("s_zip_code", this.sZipCode);
    txtParams.put("shipping", this.shipping);
    txtParams.put("trade_id", this.tradeId);
    txtParams.put("user_id", this.userId);
    if (this.udfParams != null) {
      txtParams.putAll(this.udfParams);
    }
    return txtParams;
  }

  public void putOtherTextParam(String key, String value) {
    if (this.udfParams == null) {
      this.udfParams = new TaobaoHashMap();
    }
    this.udfParams.put(key, value);
  }

  public Class<LogisticsConsignOrderCreateandsendResponse> getResponseClass() {
    return LogisticsConsignOrderCreateandsendResponse.class;
  }

  public void check() throws ApiRuleException {
    RequestCheckUtils.checkNotEmpty(companyId, "companyId");
    RequestCheckUtils.checkNotEmpty(itemJsonString, "itemJsonString");
    RequestCheckUtils.checkNotEmpty(logisType, "logisType");
    RequestCheckUtils.checkNotEmpty(orderSource, "orderSource");
    RequestCheckUtils.checkNotEmpty(orderType, "orderType");
    RequestCheckUtils.checkNotEmpty(rAddress, "rAddress");
    RequestCheckUtils.checkNotEmpty(rAreaId, "rAreaId");
    RequestCheckUtils.checkNotEmpty(rCityName, "rCityName");
    RequestCheckUtils.checkNotEmpty(rDistName, "rDistName");
    RequestCheckUtils.checkNotEmpty(rName, "rName");
    RequestCheckUtils.checkNotEmpty(rProvName, "rProvName");
    RequestCheckUtils.checkNotEmpty(rZipCode, "rZipCode");
    RequestCheckUtils.checkNotEmpty(sAddress, "sAddress");
    RequestCheckUtils.checkNotEmpty(sAreaId, "sAreaId");
    RequestCheckUtils.checkNotEmpty(sCityName, "sCityName");
    RequestCheckUtils.checkNotEmpty(sDistName, "sDistName");
    RequestCheckUtils.checkNotEmpty(sName, "sName");
    RequestCheckUtils.checkNotEmpty(sProvName, "sProvName");
    RequestCheckUtils.checkNotEmpty(sZipCode, "sZipCode");
    RequestCheckUtils.checkNotEmpty(tradeId, "tradeId");
    RequestCheckUtils.checkNotEmpty(userId, "userId");
  }

  public Map<String, String> getHeaderMap() {
    return headerMap;
  }
}
